package com.fortune.service.impl;

import com.fortune.dao.MProductInfoDao;
import com.fortune.dto.in.product.ProductAddDto;
import com.fortune.dto.in.product.ProductEditDto;
import com.fortune.dto.in.product.ProductListDto;
import com.fortune.dto.in.product.ProductUpAndDown;
import com.fortune.service.MProductInfoService;
import com.fortune.vo.channelDiscountMgt.ProductInChannealDiscountMgt;
import com.fortune.vo.productMgt.Product;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.math.BigDecimal;
import java.util.List;

@Service
public class MProductInfoServiceImpl implements MProductInfoService{
    @Autowired
    private MProductInfoDao mProductInfoDao;

    /**
     * 查询商品列表
     * @param companyId
     * @return
     */
    @Override
    public List<Product> queryProductInfoList(String companyId,ProductListDto productListDto) {
        return mProductInfoDao.queryProductInfoList(companyId,productListDto);
    }

    /**
     * 查询商品列表个数
     * @param companyId
     * @return
     */
    @Override
    public int queryProductInfoListCount(String companyId) {
        return mProductInfoDao.queryProductInfoListCount(companyId);
    }

    /**
     * 通过名称查询该商品是否存在
     * @param companyId
     * @param name
     * @return
     */
    @Override
    public int queryProductByName(String companyId, String name) {
        return mProductInfoDao.queryProductByName(companyId,name);
    }

    /**
     * 通过商品编号查询该商品是否存在
     * @param companyId
     * @param number
     * @return
     */
    @Override
    public int queryProductByNumber(String companyId, String number) {
        return mProductInfoDao.queryProductByNumber(companyId,number);
    }

    /**
     * 通过商品id查询该商品是否存在
     * @param companyId
     * @param produceId
     * @return
     */
    @Override
    public int queryProductByProduceId(String companyId, String produceId) {
        return mProductInfoDao.queryProductByProduceId(companyId,produceId);
    }

    /**
     * 新增商品
     * @param companyId
     * @param addDto
     * @return
     */
    @Override
    public int addProduce(String companyId, ProductAddDto addDto) {
        return mProductInfoDao.addProduce(companyId,addDto);
    }

    /**
     * 删除商品
     * @param companyId
     * @param produceId
     * @return
     */
    @Override
    public int deleteProduce(String companyId, String produceId) {
        return mProductInfoDao.deleteProduce(companyId,produceId);
    }

    /**
     * 编辑商品
     * @param companyId
     * @param editDto
     * @return
     */
    @Override
    public int editProductByProduceIdAndProduceId(String companyId, ProductEditDto editDto) {
        return mProductInfoDao.editProductByProduceIdAndProduceId(companyId,editDto);
    }

    /**
     * 商品上下架
     * @param companyId
     * @param upAndDown
     * @return
     */
    @Override
    public int upAndDownProduce(String companyId, ProductUpAndDown upAndDown) {
        return mProductInfoDao.upAndDownProduce(companyId,upAndDown);
    }

    /**
     * 查询商品统一批发价（对经销商）
     * @param companyId
     * @param produceId
     * @return
     */
    @Override
    public BigDecimal queryProducePrice(String companyId, String produceId) {
        return mProductInfoDao.queryProducePrice(companyId,produceId);
    }

    /**
     * 查询商品编号,名称,id
     * @param companyId
     * @return
     */
    @Override
    public List<ProductInChannealDiscountMgt> queryProduceDiscount(String companyId) {
        return mProductInfoDao.queryProduceDiscount(companyId);
    }

    /**
     * 查询商品根据id
     * @param companyId
     * @param produceId
     * @return
     */
    @Override
    public Product queryProduceInfo(String companyId, String produceId) {
        return mProductInfoDao.queryProduceInfo(companyId,produceId);
    }

    /**
     * 编辑时根据名称和编号查询是否存在
     * @param companyId
     * @param editDto
     * @return
     */
    @Override
    public int queryEditProductByNameOrNumber(String companyId, ProductEditDto editDto) {
        return mProductInfoDao.queryEditProductByNameOrNumber(companyId,editDto);
    }
}
